﻿using System;
using System.Collections;
using System.Collections.Generic;

namespace HurricanePackage
{
    /// <summary>
    /// 转态机的状态接口
    /// </summary>
    /// <typeparam name="SID">状态机id枚举</typeparam>
    /// <typeparam name="TID">条件id枚举</typeparam>
    public interface IStateForFsm< SID, TID> : IRecyclable
        where SID : Enum//状态机id
        where TID : Enum//条件id
    {
        /// <summary>
        /// 状态ID
        /// </summary>
        SID StateId { get; }
        /// <summary>
        /// 条件ID集合
        /// </summary>
        List<TID> TriggerId { get; }

        /// <summary>
        /// 进入状态
        /// </summary>
        void EnterState(params object[] _params);

        /// <summary>
        /// 持续状态
        /// </summary>
        void StayState(params object[] _params);

        /// <summary>
        /// 退出状态
        /// </summary>
        void ExitState(params object[] _params);
    }
}
